package com.moli.iov.manager.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.moli.iov.manager.model.po.AuthorityAuth;

import java.util.List;

/**
 * <p>
 * 权限菜单表 服务类
 * </p>
 *
 * @author fudaohui
 * @since 2018-12-12
 */
public interface IAuthorityAuthService extends IService<AuthorityAuth> {


    /**
     * 根据pid查询直属菜单
     * @param pid
     * @return
     */
    List<AuthorityAuth> queryChildAuthsByPid(long pid);


    /**
     * 根据pid查询直属菜单
     * @param pid
     * @return
     */
    List<AuthorityAuth> queryChildAuthsByPidAndRoleId(Long roleId,Integer isMemu,Long pid);


    /**
     * 根据pid递归查询其下所有的权限菜单
     * @param pid
     * @return
     */
    List<AuthorityAuth> queryChildAuth(long pid);

    /**
     * 根据用户id查询其身上的权限树
     * @param userId
     * @param isMemu 是否仅查询菜单，1是；其他，所有（包含菜单和按钮）
     * @return
     */
    List<AuthorityAuth> queryAuthTreeByUserId(long userId,int isMemu);

    /**
     * 根据角色id查询其身上的权限树
     * @param isMemu 是否仅查询菜单，1是；其他，所有（包含菜单和按钮）
     * @param roleId
     * @return
     */
    List<AuthorityAuth> queryAuthTreeByRoleId(long roleId,int isMemu);

//    /**
//     * 根据userID查询其全部权限菜单列表，没有层级关系
//     * @param userId 用户Id
//     * @param isMemu 是否仅查询菜单，1是；其他，所有（包含菜单和按钮）
//     * @param flag 0,只查询一级权限菜单；1，查询所有权限菜单
//     * @return
//     */
//    List<AuthorityAuth> queryAuthByUserId(Long userId,Integer isMemu,Long flag);


    /**
     *
     * @param userId
     * @return
     */
    List<AuthorityAuth> queryAuthByUserId(Long userId);

    /**
     * 根据roleId查询
     * @param roleid
     * @param isMemu 是否仅查询菜单，1是；其他，所有（包含菜单和按钮）
     * @param pid 权限的pid,一级菜单的pid为null
     * @return
     */
    List<AuthorityAuth> queryAuthByRoleId(Long roleid,Integer isMemu,Long pid);


    /**
     * 根据请求的uri查询该url是否属于按钮，查询结果
     * @param uri
     * @return
     */
    List<AuthorityAuth> queryAuthByUri(String uri);


    /**
     * 查询所有的权限数据
     * @return
     */
    List<AuthorityAuth> queryAllAuths();


}
